﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using SERVICIOS;
using SERVICIOS.Enumeraciones;

namespace VISTA
{
    public class FormAdminBase : FormBase
    {
        public FormAdminBase() {
            this.Load += new EventHandler(FormAdminBase_Load);
        }

        void FormAdminBase_Load(object sender, EventArgs e)
        {
        }

        public FormABMBase FormABM { get; set; }

        protected virtual void ShowFormABM(ModoABM modo, int id)
        {
        }

        protected virtual void EjecutarFormABM(ModoABM modo, int id) {
            if (id == -1)
            {
                MessageBox.Show("Debe seleccionar al menos un item.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                this.ShowFormABM(modo, id);
            }
        }

        protected virtual void EjecutarAccion(AccionADM accion)
        {
            switch (accion)
            {
                case AccionADM.Buscar:
                    //this.BuscarEntidad();
                    break;
                case AccionADM.DarDeAlta:
                    this.Alta();
                    break;
                case AccionADM.Modificar:
                    this.Modificar();
                    break;
                case AccionADM.Eliminar:
                    this.Eliminar();
                    break;
                case AccionADM.Consultar:
                    this.Consultar();
                    break;
                default:
                    break;
            }
            this.BuscarEntidadesConsulta();
        }

        protected virtual void Consultar()
        {
            if (Seguridad.CanExecuteAccionFormulario(Sesion.IDUsuario, this.GetType(), Acciones.Lectura))
            {
                this.EjecutarFormABM(ModoABM.Consultar, this.GetEntidadSeleccionada());
            }
            else
            {
                MessageBox.Show("No se puede ejecutar la acción debido a que no posee los permisos necesarios.", "SEG", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        protected virtual void Eliminar()
        {
            if (Seguridad.CanExecuteAccionFormulario(Sesion.IDUsuario, this.GetType(), Acciones.Escritura))
            {
                this.EjecutarFormABM(ModoABM.Eliminar, this.GetEntidadSeleccionada());
            }
            else
            {
                MessageBox.Show("No se puede ejecutar la acción debido a que no posee los permisos necesarios.", "SEG", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        protected virtual void Modificar()
        {
            if (Seguridad.CanExecuteAccionFormulario(Sesion.IDUsuario, this.GetType(), Acciones.Escritura))
            {
                this.EjecutarFormABM(ModoABM.Modificar, this.GetEntidadSeleccionada());
            }
            else
            {
                MessageBox.Show("No se puede ejecutar la acción debido a que no posee los permisos necesarios.", "SEG", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        protected virtual void Alta()
        {
            if (Seguridad.CanExecuteAccionFormulario(Sesion.IDUsuario, this.GetType(),Acciones.Escritura))
            {
                        this.ShowFormABM(ModoABM.Alta, this.GetEntidadSeleccionada());
            }
            else
            {
                MessageBox.Show("No se puede ejecutar la acción debido a que no posee los permisos necesarios.", "SEG", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        protected virtual int GetEntidadSeleccionada()
        {
            return -1;
        }

        protected virtual void BuscarEntidadesConsulta()
        {
            
        }

    }
}